# -*- coding: utf-8 -*-
"""
@Time ： 2021/8/2 21:51
@Auth ： Mr.掌心 2929184523
@Company ：特斯汀学院 @testingedu.com.cn
@Function ：excel数据驱动
"""
import traceback

from My_Keywords.appkeys import App
from common.excel.Excel import get_reader,get_writer
#创建关键字对象
from My_Keywords.keyword import Web

app = App()

def runcase(obj, line, i):
    """
    反射执行用例
    :param obj: 关键字对象
    :param line: 数据驱动的参数
    :param i: 结果写入的行
    :return:
    """
    if len(line[0]) > 1 or len(line[1]) > 1:
        #这是分组信息，不需要执行
        print(line)
    try:
        func = getattr(obj, line[3])
    except Exception as e:
        print('关键字%s不存在' % line[3])
        return

    #截取参数列表
    params = line[4:]
    params = params[:params.index('')]
    print(params)

    #开始执行
    try:
        if params:
            func(*params)
        else:
            func()
        #执行成功，写入PASS
        writer.write(i, 7, "PASS" , 3)
    except Exception as e:
        #执行失败，写入fail，并保存错误信息
        writer.write(i, 7, "FAIL", 2)
        writer.write(i ,8, str(traceback.format_exc()))

reader = get_reader('../lib/自动化用例app.xlsx')
writer = get_writer('../lib/自动化用例app.xlsx', '../lib/result-自动化用例app.xlsx')

#一个sheet一个sheet的读
sheetname = reader.get_sheets()
print(sheetname)

for sheet in sheetname:
    #设置当前读取的sheet页面
    reader.set_sheet(sheet)
    writer.set_sheet(sheet)
    lines = reader.readline()
    print(lines)

    for i in range(1, len(lines)):
        print(lines[i])
        runcase(app, lines[i], i)

    print()

#全部跑完，保存结果
writer.save_close()


















